![MongoDB のデータ出力ツール mongoexportとmongodumpの比較](https://devio2023-media.developers.io/wp-content/uploads/2016/06/mongo.png)
MongoDB のデータ出力ツール mongoexportとmongodumpの比較
こんにちは、菊池です。
MongoDBのデータを出力するツールとして、mongoexportとmongodumpがあります。どちらもmongodb-toolsのパッケージに含まれるツールです。この2つのツールの違いを比較してみました。
mongoexportとmongodump
結論から言うと、mongoexportはCSVまたはJSONのテキストデータ、mongodumpはBSON形式というバイナリデータで出力します。
使い方も、データフォーマットの指定以外にはほぼ、同じように利用することができます。
mongoexport | mongodump | |
データフォーマット | CSV/JSON | BSON |
インデックスなどのメタデータ | なし | あり |
データ項目(key)の指定:-f | 可能 | 可能 |
対象データベースの指定:-d | 可能 | 可能 |
対象コレクションの指定:-c | 可能 | 可能 |
インポートツール | mongoimport | mongorestore |
主な用途 | 他のツールへのデータ連携 | バックアップ/リストア |
mongodumpでは、インデックスなどを含め、データベースの情報が完全に含まれるため、バックアップとしての活用が可能です。一方で、mongoexportはテキストでの出力となり、ことなるツールとのデータのやりとりに向いています。
mongoexport実行例
$ mongoexport -h mongo0:27017 -d test -c members --out members.json 2017-07-31T22:59:03.059+0900 connected to: mongo0:27017 2017-07-31T22:59:03.059+0900 exported 2 records
出力データはこのようになります。
$ cat members.json {"_id":"jane","joined":{"$date":"2011-03-02T00:00:00.000Z"},"likes":["golf","racquetball"]} {"_id":"joe","joined":{"$date":"2012-07-02T00:00:00.000Z"},"likes":["tennis","golf","swimming"]}
mongodump実行例
$ mongodump -h mongo0 --port 27017 -d test --out all 2017-07-31T23:02:51.759+0900 writing test.contacts to 2017-07-31T23:02:51.760+0900 writing test.members to 2017-07-31T23:02:51.760+0900 writing test.user to 2017-07-31T23:02:51.760+0900 done dumping test.contacts (3 documents) 2017-07-31T23:02:51.760+0900 done dumping test.members (2 documents) 2017-07-31T23:02:51.760+0900 done dumping test.user (1 document)
出力データを確認します。
$ ls -l all/test/ 合計 28 -rw-rw-r-- 1 ec2-user ec2-user 220 7月 31 23:02 contacts.bson -rw-rw-r-- 1 ec2-user ec2-user 214 7月 31 23:02 contacts.metadata.json -rw-rw-r-- 1 ec2-user ec2-user 166 7月 31 23:02 members.bson -rw-rw-r-- 1 ec2-user ec2-user 84 7月 31 23:02 members.metadata.json -rw-rw-r-- 1 ec2-user ec2-user 133 7月 31 23:02 membersView_1.metadata.json -rw-rw-r-- 1 ec2-user ec2-user 37 7月 31 23:02 user.bson -rw-rw-r-- 1 ec2-user ec2-user 81 7月 31 23:02 user.metadata.json
データ本体のバイナリbsonと、コレクションごとのメタデータのJSONが含まれます。メタデータには、以下のようにインデックス情報などが含まれています。
$ cat all/test/members.metadata.json {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"test.members"}]}
まとめ
以上です。
MongoDBのデータ出力ツールを比較しました。用途にあった適切なツールを活用しましょう。